home *** CD-ROM | disk | FTP | other *** search
- /*
- * NAME: SIERPINSKI
- *
- * DESCRIPTION: CONTROL ROUTINE FOR DRAWING SIERPINSKI CURVES.
- *
- * SYNOPSIS: SIERPINSKI (DEPTH, GRID)
- * INT DEPTH;
- * INT GRID;
- *
- * GLOBALS: NONE.
- *
- * CALLS: A (SIERPINSKI.C)
- * DO_PLOT (SIERPINSKI.C)
- * B (SIERPINSKI.C)
- * C (SIERPINSKI.C)
- * D (SIERPINSKI.C)
- *
- * CALLED BY: TEST (TEST.C)
- */
-
- #INCLUDE "LAYERS.H"
-
- STRUCT LAYER *DRAWP;
-
- SIERPINSKI (DEPTH, GRID)
- INT DEPTH; /* DRAW SIERPINSKI CURVES OF ORDERS 1 TO
- DEPTH */
- INT GRID; /* SIZE TO DRAW THEM */
- {
- STRUCT POINT HOME;
- STRUCT POINT OLD;
- STRUCT POINT CUR;
- INT I;
- INT H;
-
- H = GRID / 4;
- HOME.X = 2 * H;
- HOME.Y = 3 * H;
- FOR (I = 1; I <= DEPTH; I++) {
- HOME.X -= H;
- H = H / 2;
- HOME.Y += H;
- CUR = OLD = HOME;
- A (I, H, &OLD, &CUR);
- CUR.X += H;
- CUR.Y -= H;
- DO_PLOT (&OLD, &CUR);
- B (I, H, &OLD, &CUR);
- CUR.X -= H;
- CUR.Y -= H;
- DO_PLOT (&OLD, &CUR);
- C (I, H, &OLD, &CUR);
- CUR.X -= H;
- CUR.Y += H;
- DO_PLOT (&OLD, &CUR);
- D (I, H, &OLD, &CUR);
- CUR.X += H;
- CUR.Y += H;
- DO_PLOT (&OLD, &CUR);
- }
- }